<template></template>
<script>
export default {
  name: 'InstaMent',
  props: {
    contract: {
      type: [Object],
      required: true
    }
  },
  data () {
    return {
      // map对象
      map: null,
      // 分期标准
      standard: null,
      // 分期完数据
      standardlist: []
    }
  },
  created () {
    this.$message.success('分期组件加载')
    this.$nextTick(() => {
      this.map = new Map([
        // 1年12期
        [1, this.oneyeartwelveexpect],
        [2, this.oneyearfourexpect],
        [3, this.oneyeartwoexpect],
        [4, this.oneyearoneexpect],
        [5, this.oneyeartwoexpect],
        [6, this.oneyearthreeexpect],
        [7, this.oneyearfourexpect],
        [8, this.oneyearfiveexpect]
      ])
    })
  },
  methods: {
    // 分期计算
    installment () {
      console.log('父组件数据', this.contract)
      // 分期模式
      this.standard = this.contract.installment
      // 开始时间
      let startTime = new Date(this.contract.begintime)
      // 结束时间
      // let endTime = new Date(this.contract.finishtime)
      // 签约时间
      let signtime = new Date(this.contract.signatory)
      // 应收日期 = 签约时间 + 6天
      signtime.setDate(signtime.getDate() + 6)
      // 金额
      let money = this.contract.money

      // map () - 执行不同方法
      let installment = this.map.get(this.standard)
      installment(startTime, signtime, money)

      // 传递给父组件
      this.$parent.contractlist = this.standardlist
    },
    // 1年12期
    oneyeartwelveexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 12; i++) {
        let obj = {}
        // 唯一值
        obj.id = i + 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        // startTime.setDate(startTime.getDate() + this.getDaysOfMonth(startTime))
        startTime.setDate(signtime.getMonth() + 1)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 12
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setMonth(signtime.getMonth() + 1)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },

    // 1年4期-按季度
    oneyearfourexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 4; i++) {
        let obj = {}
        // 唯一值
        obj.id = i + 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        startTime.setMonth(startTime.getMonth() + 3)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 4
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setMonth(signtime.getMonth() + 3)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },

    // 1年2期-半年
    oneyeartwoexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 2; i++) {
        let obj = {}
        // 唯一值
        obj.id = i + 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        startTime.setMonth(startTime.getMonth() + 6)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 2
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setMonth(signtime.getMonth() + 6)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },

    // 一年一期
    oneyearoneexpect (startTime, signtime, money) {
      let x = []
      let obj = {}
      // 唯一值
      obj.id = 1
      // 应收日期
      obj.payDate = new Date(signtime)
      // 分期开始
      obj.payDatStart = new Date(startTime)
      // 分期结束
      startTime.setFullYear(startTime.getFullYear() + 1)
      obj.payDatEnd = new Date(startTime)
      // 金额
      let montxt = money / 1
      obj.payMoney = montxt.toFixed(2)
      // 处理数据
      x.push(obj)

      // 传递分期数据
      this.standardlist = x
    },

    // 2年（一期一年）
    oneyeartwoexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 2; i++) {
        let obj = {}
        // 唯一值
        obj.id = 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        startTime.setFullYear(startTime.getFullYear() + 1)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 2
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setFullYear(signtime.getFullYear() + 1)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },

    // 3年（一期一年）
    oneyearthreeexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 3; i++) {
        let obj = {}
        // 唯一值
        obj.id = 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        startTime.setFullYear(startTime.getFullYear() + 1)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 3
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setFullYear(signtime.getFullYear() + 1)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },

    // 4年（一期一年）
    oneyearfourexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 4; i++) {
        let obj = {}
        // 唯一值
        obj.id = 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        startTime.setFullYear(startTime.getFullYear() + 1)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 4
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setFullYear(signtime.getFullYear() + 1)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },

    // 5年（一期一年）
    oneyearfiveexpect (startTime, signtime, money) {
      let x = []
      for (let i = 0; i < 5; i++) {
        let obj = {}
        // 唯一值
        obj.id = 1
        // 应收日期
        obj.payDate = new Date(signtime)
        // 分期开始
        obj.payDatStart = new Date(startTime)
        // 分期结束
        startTime.setFullYear(startTime.getFullYear() + 1)
        obj.payDatEnd = new Date(startTime)
        // 金额
        let montxt = money / 5
        obj.payMoney = montxt.toFixed(2)
        // 应收日期
        signtime.setFullYear(signtime.getFullYear() + 1)
        // 处理数据
        x.push(obj)
      }
      // 传递分期数据
      this.standardlist = x
    },
    // 分期套餐选择
    // 获取某年-某月-的天数
    getDaysOfMonth (data) {
      let year = data.getFullYear()
      let month = data.getMonth()
      let date = new Date(year, month + 1, 0)
      let days = date.getDate()
      return days
    }
  }
}
</script>

<style lang="scss" scoped></style>
